package com.simon.nvwo.modules.mybatis;

import java.sql.*;

/**
 * jdbc连接数据库示例
 *
 * @author zhaoyiwu
 * @create 2018-02-28 17:32
 **/
public class JdbcTemplate {

    public static void main(String[] args) {

        //创建连接
        Connection connection=null;
        //预编译的SQL语句
        PreparedStatement preparedStatement=null;
        //结果集
        ResultSet resultSet=null;

        try{
            //加载mysql驱动
            // Class.forName(Class.name) 加载完com.mysql.jdbc.Driver类后，Driver类会执行静态代码块，
            // 调用java.sql.DriverManager.registerDriver将自己注册到DriverManager中
            Class.forName("com.mysql.jdbc.Driver");
            //获取数据库连接
            connection= DriverManager.getConnection("jdbc:mysql://url:port/database?characterEncoding=utf-8", "usernamet", "password");
            //定义sql语句 ?表示占位符
            String sql = "select * from user where username = ?";
            //获取预处理statement
            preparedStatement = connection.prepareStatement(sql);
            //设置参数，第一个参数为sql语句中参数的序号（从1开始），第二个参数为设置的参数值
            preparedStatement.setString(1, "王五");
            //向数据库发出sql执行查询，查询出结果集
            resultSet =  preparedStatement.executeQuery();
            //遍历查询结果集
            while(resultSet.next()){
                System.out.println(resultSet.getString("id")+"  "+resultSet.getString("username"));
            }

        }catch (Exception e){

            e.printStackTrace();
        }finally{
            //释放资源
            if(resultSet!=null){
                try {
                    resultSet.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if(preparedStatement!=null){
                try {
                    preparedStatement.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if(connection!=null){
                try {
                    connection.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }

    }
}
